﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data;
using BL;
using CrystalDecisions.Shared;
using BE;

namespace UI.Secretaria
{
    public partial class FrmCertificadoEstudioListado : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {

        }


        private void GenerarReporte(String CodigoAlumno,String CodigoEspecialidad) {
            labelError.Text = "";
            try
            {
                ReporteCertificadoEstudiosFinal reporte = new ReporteCertificadoEstudiosFinal();
                ReporteCerfificadoEstudios_BL rcv = new ReporteCerfificadoEstudios_BL();
                DataTable data = rcv.ObtenerCertificadoAlumno(CodigoAlumno, CodigoEspecialidad);


                reporte.SetDataSource(data);

                String codigo= User.Identity.Name;
                Usuario_BLL user =new Usuario_BLL();
                Usuario usuarioactual = user.ObtenerUsuarioPorID(codigo);

                reporte.DataDefinition.FormulaFields["Inicial"].Text = "'" + usuarioactual.InicialCertificado + "'";

                System.IO.MemoryStream rptStream = new System.IO.MemoryStream();
                rptStream = (System.IO.MemoryStream)reporte.ExportToStream(ExportFormatType.PortableDocFormat);
                Response.Clear();
                Response.Buffer = true;
                Response.ContentType = "application/pdf";
                Response.AddHeader("Content-Disposition", "attachment;filename=" + "Certificado " + CodigoAlumno + ".pdf");

                Response.BinaryWrite(rptStream.ToArray());
                reporte.Close();
                Response.End();

            }
            catch (Exception ex)
            {
                labelError.Text = ex.Message.ToString();
            }

        }

        protected void btnBuscar_Click1(object sender, EventArgs e)
        {
            try
            {
                String codigo = txtCodigo.Text;
                String nombre = txtNombre.Text;
                Notas_BL notas = new Notas_BL();
                DataTable listado = notas.BusquedaAlumnosListado(ArmarFiltro(codigo, nombre));
                llenarTablaAlumnos(listado);
                  
            }
            catch (Exception ex)
            {

                ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "Se produjo el siguiete error :" + ex.Message + "');", true);
                return;
            }
           
        }


        private void llenarTablaAlumnos(DataTable listado)
        {
            try
            {
                gridListadoAlumnos.Caption = "";
                
                if (listado.Rows.Count == 0)
                {
                    gridListadoAlumnos.Caption = "No se encontro ningun alumno";
                }
                else {
                    gridListadoAlumnos.Caption = "Se encontraron "+listado.Rows.Count+ " registros";
                }

                gridListadoAlumnos.DataSource = listado;
                gridListadoAlumnos.DataBind();
            }
            catch (Exception ex)
            {
                ScriptManager.RegisterStartupScript(this, this.GetType(), "script", "alert('" + "Se produjo el siguiete error :" + ex.Message + "');", true);

            }
        }

        protected void gridListadoAlumnos_PageIndexChanging(object sender, GridViewPageEventArgs e)
        {
            String codigo = txtCodigo.Text;
            String nombre = txtNombre.Text;
            Notas_BL notas = new Notas_BL();
            DataTable listado = notas.BusquedaAlumnosListado(ArmarFiltro(codigo, nombre));
            gridListadoAlumnos.PageIndex = e.NewPageIndex;
            llenarTablaAlumnos(listado);
        }

        protected void gridListadoAlumnos_SelectedIndexChanged(object sender, EventArgs e)
        {
            String CodigoAlumno = gridListadoAlumnos.SelectedRow.Cells[0].Text;
            String CodigoEspecialidad = gridListadoAlumnos.SelectedRow.Cells[2].Text;

            GenerarReporte(CodigoAlumno, CodigoEspecialidad);
        }


        private String ArmarFiltro(String codigo, String nombre)
        {
            String resultado = "";

            if (codigo.Length > 0)
            {
                resultado += "cod_alumno like '%" + codigo + "%'";
            }

            if (nombre.Length > 0)
            {
                if (resultado.Length > 0)
                {
                    resultado += " and ";
                }
                resultado += "concat(dm.APEPAT,' ',dm.APEMAT,' ',dm.NOMBRE)  like '%" + nombre + "%'";
            }

            if (resultado.Length > 0)
            {
                resultado = " where " + resultado;
            }

            return resultado;
        }
    }
}